2 Problem: 11088 - End up with More Teams
3 Author: Andrés Mejía-Posada
5 Trying another approach...
6 Time-limit exceeded + wrong answer
29 #define D(x) cout << #x " is " << x << endl
30 #define bit(i, n) (n & (1 << i))
32 int x
[15], p
[15], n
, ans
;
36 void search(int teams
, int person
, int first
){
37 //printf("t = %d, p = %d, f = %d\n", teams, person, first);
38 //for (int i=0; i<person; ++i) cout << p[i] << " "; cout << endl;
39 ans
= max(ans
, teams
);
41 for (int i
=first
; i
<n
; ++i
){
46 search(teams
, person
+1, i
+1);
47 }else if (x
[p
[person
-2]] + x
[p
[person
-1]] + x
[i
] >= 20){
48 search(teams
+ 1, person
+1, p
[person
-2]);
57 while (scanf("%d", &n
) == 1 && n
){
58 for (int i
= 0; i
<n
; ++i
) scanf("%d", &x
[i
]);
60 memset(used
, 0, sizeof used
);
62 printf("Case %d: %d\n", pizza
++, ans
);